//Source file: C:\\javier\\mario\\Java\\taladro\\control\\MovimientoCensado.java

package taladro.control;

import org.eclipse.ui.console.ConsolePlugin;
import org.eclipse.ui.console.IConsole;

import controles.interfaz.Consola;
import taladro.maquina.Motor;

public class MovimientoCensado extends Movimiento implements Runnable 
{
   /**
    * @roseuid 3F355CD3022E
    */
   public MovimientoCensado() 
   {    
   }
   
   /**
    * @param retardo
    * @param motor
    * @roseuid 3F35352D03B0
    */
   public MovimientoCensado(int retardo, Motor motor) 
   {
       super(retardo,0,motor);
   }
   
   /**
    * @roseuid 3F355C770240
    */
   public void run()
   {
        Secuencia sec = motor.getSecuencia();
        sec.setDirection(Secuencia.RETROCEDER );
        
        byte codSel = motor.getCodSel();
        byte codSensor = motor.getCodSensor();
        byte entrada = (byte)0x00;
        
        IConsole consolas[]=ConsolePlugin.getDefault().getConsoleManager().getConsoles();
    	((Consola)consolas[0]).imprime("proceso, mover " + numMovs + ":" + (int)motor.getCodSel());
        System.out.println("proceso, mover " + numMovs + ":" + (int)motor.getCodSel());
        byte codCensado = (byte) 0x80;
        long i=0;
        
        try{
            //for( int i=0; (!bDetener)  && i < numMovs ; i++ )
            sleep(10);
            while( (!bDetener) && ( (codSensor & entrada) != codSensor) )
            {
                //System.out.print("Salida movimiento " + Integer.toHexString( (byte)(motor.getCodSel()) ) 
                //+ Integer.toHexString( (byte)( codCensado ) ));
                puerto.outPortDirect( (byte) (motor.getCodSel() | codCensado | sec.getNext() ) );
                //puerto.outPort( (byte) (motor.getCodSel() | sec.getNext() ) );
                
                /*
                if( i++ < 100)
                    //SystemTimer.sleep(7);
                    SystemTimer.sleep(retardoIni);
                    //sleep(10);
                else
                    //SystemTimer.sleep(2);
                    SystemTimer.sleep(retardoCont);
                    //sleep(2);                 
                 */
                //System.out.print("Salida en cero " );
                //puerto.outPortDirect( (byte) 0x00 );
                entrada = puerto.inPort();
                System.out.println("Lectura " + entrada );
                if( (entrada & codSensor) != codCensado )
                    entrada = (byte)(entrada | codCensado);
                    //entrada = (byte)~entrada;
                else
                    entrada = (byte)~entrada;
                entrada = (byte)~entrada;
            }           
            sec.setPosActual(0);
            motor.setPosActual(0);
        }/*
        catch( java.lang.InterruptedException ie){
            System.out.println("Terminado desde mov Simple motor: " + (int)motor.getCodSel() );
        }*/
        catch( Exception e ){
            e.printStackTrace();
        }
   }
}
